package cn.seem.controller;

import cn.seem.exception.Wn32Exception;
import cn.seem.utils.UuidUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 专门处理文件上传的控制器
 */
@Controller
public class FileUploadController {

    /**
     *
     * @param uploadFile  封装了上传文件信息的对象！
     * @return
     */
    @RequestMapping("/fileUpload")
    public String detailFileUpLoad(MultipartFile uploadFile, HttpServletRequest request) throws IOException, Wn32Exception {
        //-- 获取请求参数键的值
        String temp = uploadFile.getName();
        System.out.println("抛出自定义异常");
        throw new Wn32Exception();


        /*
        //-- 获取实际的上传文件名称
        String uploadFileName = uploadFile.getOriginalFilename();

        //-- 解决文件存储时，文件名重复问题
        //-- 思路时：在文件名的后面追加 UUID
        //-- 把文件名拆成两个部分：名字部分和后缀部分
        //-- 在名字的基础上 + uuid + 后缀 得到新的文件名
        String fileName = uploadFileName.substring(0,uploadFileName.lastIndexOf("."));
        String suffix = uploadFileName.substring(uploadFileName.lastIndexOf("."));
        fileName = fileName + UuidUtils.getUuid32();
        fileName = fileName + suffix;
        //System.out.println(fileName);

        //fileName = uploadFileName.substring(uploadFileName.lastIndexOf())

        ServletContext servletContext = request.getServletContext();
        String realPath = servletContext.getRealPath("upload");
        System.out.println(realPath);

        //-- 获取当前的日期：目的是把每天上传的文件放到独立的文件夹下
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        String dateTime = format.format(new Date());

        File parent = new File(realPath + File.separator + dateTime);

        if (!parent.exists()){
            parent.mkdirs();
        }

        //-- 目标文件
        File target  = new File(parent,fileName);
        //-- 使用MultipartFile接口中的方法来实现文件移动
        uploadFile.transferTo(target);


        System.out.println(uploadFile);
        return "list";
*/

    }

}
